# coding=utf-8
def hanoi_tower(n):
    # 记录移动步骤
    steps = []
    def move(disk, source, auxiliary, target):
        if disk == 1:
            # 如果只有一个盘子，直接移动
            steps.append(f"移动圆盘:{disk}从盘{source}到盘{target}")
        else:
            # 步骤1：将n-1个盘子从源杆移动到辅助杆
            move(disk - 1, source, target, auxiliary)
            # 步骤2：将最大的盘子从源杆移动到目标杆
            steps.append(f"移动圆盘:{disk}从盘{source}到盘{target}")
            # 步骤3：将n-1个盘子从辅助杆移动到目标杆
            move(disk - 1, auxiliary, source, target)
    # 开始移动，使用a、b、c表示三根杆子
    move(n, 'a', 'b', 'c')
    # 输出所有步骤
    for step in steps:
        print(step)
    # 输出最少移动次数：2^n - 1
    print(len(steps))
def main():
    import sys
    # 读取输入
    n = int(sys.stdin.readline())
    # 解决汉诺塔问题
    hanoi_tower(n)
if __name__ == "__main__":
    main()